class Solution
{
public:
    bool containsNearbyDuplicate(vector<int> &nums, int k)
    {
        unordered_map<int, int> lastOccur;
        int n = nums.size();
        for (int i = 0; i < n; ++i)
        {
            if (lastOccur.count(nums[i]))
            {
                if (i - lastOccur[nums[i]] <= k)
                {
                    return true;
                }
            }
            lastOccur[nums[i]] = i;
        }
        return false;
    }
};